package Logica.Dialogo.Entidad;

import Sistema.Configuracion;
import cerimice.ValidarDatos;
import Persistencia.Definicion.Marca;
import Persistencia.Fachada.ListaFachada;
import Persistencia.Fachada.MarcaFachada;

import java.util.List;

import com.vaadin.ui.Table;
import java.util.logging.Logger;

/* @author cerimice */
public class MarcaLogica
    {
    private ValidarDatos    valida;
    private ListaFachada    lista;
    private MarcaFachada    objFachada;
    private Marca           entidad;
    
    private String          titulo;
    private String          error;
    
    public MarcaLogica()
        {
        titulo = "Marcas";
        valida      = new ValidarDatos();
        lista       = new ListaFachada();
        objFachada  = new MarcaFachada();
        }
    
    public Table generarTabla(String nombre,Table tabla) throws Exception
        {
        try
            {
            tabla.removeAllItems();
            List<Marca> listado = lista.listaMarca(nombre);
            for(Marca obj:listado)
                {tabla.addItem(new Object[]{obj.getClave(),obj.getNombre()},obj.getClave());}
            return tabla;
            }
        catch (Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public Marca obtenerObjeto(String clave) throws Exception
        {
        try
            {
            entidad = objFachada.obtener(clave);
            return entidad;
            }
        catch (Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public boolean agregarObjeto(String nombre) throws Exception
        {
        try
            {
            if(validarDatos(nombre))
                {
                if(objFachada.agregar(nombre))
                    {return true;}
                return false;
                }
            return false;
            }
        catch (Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    public boolean modificarObjeto(String clave, String nombre) throws Exception
        {
        try
            {
            if(validarDatos(nombre))
                {
                if(objFachada.modificar(clave,nombre))
                    {return true;}
                return false;
                }
            return false;
            }
        catch (Exception Ex)
            {Logger.getLogger(this.getClass().getName()).log(Configuracion.nivelLoggin(),Ex.getMessage()); throw Ex;}
        }
    
    private boolean validarDatos(String nombre)
        {
        if(!valida.isCadena(nombre))         {error = "El campo NOMBRE no es valido"; return false;}
        return true;
        }
    
    public String getError()
        {return error;}
    
    public String getTitulo()
        {return titulo;}
    }
